#include "head.h"

/*
#include <pthread.h>
int pthread_setcanceltype(int type, int *oldtype);

功能:
    设置线程取消的类型（即取消请求何时生效），并返回之前的取消类型。

参数:
    type: 新的取消类型，可以是以下值之一：
        * `PTHREAD_CANCEL_DEFERRED` - 取消操作被推迟到线程到达一个取消点时才生效（默认）。
            man 7 pthreads
        * `PTHREAD_CANCEL_ASYNCHRONOUS` - 取消操作立即生效。

    oldtype: 用于存储之前的取消类型的指针。如果不需要保存之前的类型，可以传递 `NULL`。

返回值:
    成功: 返回 0。
    失败: 返回错误码。
*/

void * func_1(void * ptr)
{
    int num = 50;
    pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED , NULL);
    while (1)
    {
        sleep(1);
        printf("当前值:%d\n", num);
        num--;
    }
}

int main(int argc, char const *argv[])
{
    pthread_t tid;

    // 创建线程
    pthread_create( &tid , NULL ,  func_1 , NULL);

    // 设定分离态
    pthread_detach( tid );

    sleep(5);
    pthread_cancel( tid );

    while (1)
    {
        /* code */
    }
    

    return 0;
}


